今天來整理一下 JS 中有哪些常用的型別吧!
非基本型別(Primitives)即物件(Object)
先從大方向分類,這樣是不是比較好記了~
那基本型別又包含了哪些呢?
var str = "Hello World";
var num = 123;
var bool = ture;
var a;
console.log(a); // undefined
//or
var b = undefined;
console.log(b); // undefined
var a = null;
Q: 感覺 undefined 和 null 差不多,他們是一樣的嗎?
A: 不一樣,簡單來說 undefined 可以想成變數只有宣告,但沒有給值(未定義初始值);而 null 是指該變數沒有值。
除了上方提到的那些,其餘都是屬於物件。
物件{ 屬性: 值 }
var obj = {
name: 'Ming',
age: 18
}
console.log(obj.name, obj.age); // Ming, 18
// or
var obj2 = {};
obj2.name = "Alice";
obj2.age = 16;
物件也可以這樣用
var obj = {};
obj['Ming'] = { age: 18 };
obj['Alice'] = { age: 16 };
console.log(obj);
// {
// Alice: { age: 16 },
// Ming: { age: 18 }
// }
console.log(obj.Ming.age); // 18
恩...? 上面是不是少提了 陣列(Array) 呢...?
沒有少提喔,在 JS 中並沒有 Array 這個型別,它一樣屬於物件,其在記憶體中的位置也不是連續的。
沒有 Array 的話,那這個是什麼?
var arr = ["hello", "world"];
它還是屬於物件喔
var arr = ["hello', 'world"];
console.log(typeof(arr)); // object
只是 JS 提供了很多 method,讓它用起來更像是 Array。
ex:
var arr = ["hello", "world"];
console.log(arr.length); // 2
arr.push("apple");
console.log(arr); // ["hello", "world", "apple"]
有時候還是要判斷是否是陣列而不是物件的話,可以用這個方法
var arr = ["hello", "world"];
Array.isArray(arr); // true
關於 JS 中的陣列特性與說明,如果想要更詳細了解可以到網路上查詢。
最後是 function,它嚴格來說還是屬於物件,但是 typeof 結果是 function,這個有興趣了解的可以自己 google。
function sayHi(){
console.log("Hi");
}
sayHi(); // Hi
也可以帶入參數
function addTwoNum(a, b){
return a + b;
}
var total = addTwoNum(10, 20);
console.log(total); // 30
物件(Object)的值也可以是 function
var obj = {
i: 0,
add: function(){
obj.i++;
}
}
obj.add();
obj.add();
console.log(obj.i); // 2
今日的分享就到這,我們明天見
ES6 中新增了一個 primitive, 叫做 Symbol
喔
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures
謝謝大大補充,我來研究一下